#define _CRT_SECURE_NO_WARNINGS 1


//#include"list.h"
//
//int main()
//{
//	yyh::test1();
//
//	return 0;
//}


#include<functional>
#include<iostream>

using namespace std;

namespace yyh
{
	template<class T>
	class shared_prt
	{
	public:
		shared_prt(T* ptr = nullptr)
			:_ptr(ptr)
			,_pcount(new int(1))
		{ }

		T& operator*()
		{
			return *_ptr;
		}

		T* operator->()
		{
			return _ptr;
		}

	private:
		T* _ptr;
		int* _pcount;
		function<void(T*)> _del = [](T* ptr) { delete ptr; };
	};
}

int main()
{


	return 0;
}